//
//  AppDelegate.h
//  Init
//
//  Created by apple on 2020/7/2.
//  Copyright © 2020 zhaoshijie. All rights reserved.
//


#import "AppDelegate.h"
#import "EBMThirdPartyConfigure.h"
#import "EBMTabBarViewController.h"


@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    
    //  创建bug Catch     会catch掉IM的消息
    [self createViewInBugCatch];
    
    
    //  创建总视图
    [self createWindowAndTabBar];
    
    //  第三方库
    [self createInThirdParty];

    //  请求请求    用户行为上报
    [self requestDataInUserReport];
    
    
    
    return YES;
}



//  创建bug Catch
- (void)createViewInBugCatch
{
    
    if(KDebugStatus)
    {
        //  创建bug Catch
        return;
    }
    
    [JJException configExceptionCategory:JJExceptionGuardAll];
    [JJException startGuardException];
    
    //Default value:NO  当异常时，默认程序不会中断，如果需要遇到异常时退出
//    JJException.exceptionWhenTerminate = YES;
    
//    [JJException addZombieObjectArray:@[TestZombie.class]];
    
    [JJException registerExceptionHandle:self];
    
}


#pragma mark --------------视图--------------
//  创建总视图
- (void)createWindowAndTabBar
{
    
    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    
    EBMTabBarViewController *tabBarVC = [[EBMTabBarViewController alloc]init];
    self.window.rootViewController = tabBarVC;
    
    
    
    
}


#pragma mark --------------第三方库设置--------------

//  第三方库
- (void)createInThirdParty
{
    //  设置第三方配置
    [EBMThirdPartyConfigure settingThirdPartyConfigure];
}




//  请求请求    用户行为上报
- (void)requestDataInUserReport
{
    //  用户行为上报
//    [InformationReportClass requestDataInUserLogReport];
}



#pragma mark --------------方法--------------


//  唤起app
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    NSString *urlString = [url absoluteString];

    if([urlString containsString:@""])
    {
        //  根据跳转进来的地址处理
        
        
    }
    else if([urlString containsString:@"platformId=wechat"])
    {
        //    return  [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
//        return  [WXApi handleOpenURL:url delegate:[EBMWechatManagerSingle shareWechatManagerSingle]];
        
        //  如果是微信小程序跳转，在这里处理下。我用的单独对接的微信开发平台，然后写了单例处理回调参数。接受微信参数需要在这里处理
        
        
        
    }
    
    return YES;
}


#pragma mark ----------JJExceptionHandle 代理方法----------

/**
 Crash message and extra info from current thread       bug catch接受的地方
 
 @param exceptionMessage crash message
 @param info extraInfo,key and value
 */
- (void)handleCrashException:(NSString*)exceptionMessage extraInfo:(nullable NSDictionary*)info
{
//    NSLog(@"Bug:%@",info);
    
    //  记录崩溃，一次或者两次崩溃，可以清除本地的数据清除。这是数据缓存的处理方式之一，
    //  上报发送后台用，用同步请求
    
    
    
}

#pragma mark ----------  推送  处理----------
//
///**
// 启动推送处理
//
// @param application 应用
// @param launchOptions 启动参数
// */
//- (void)startUpPushHandleWithApplication:(UIApplication *)application
//                           launchOptions:(NSDictionary *)launchOptions
//{
//
//
//    UMessageRegisterEntity * entity = [[UMessageRegisterEntity alloc] init];
//    //type是对推送的几个参数的选择，可以选择一个或者多个。默认是三个全部打开，即：声音，弹窗，角标
//    entity.types = UMessageAuthorizationOptionBadge|UMessageAuthorizationOptionSound|UMessageAuthorizationOptionAlert;
//
//
//    [UNUserNotificationCenter currentNotificationCenter].delegate=self;
//    [UMessage registerForRemoteNotificationsWithLaunchOptions:launchOptions Entity:entity     completionHandler:^(BOOL granted, NSError * _Nullable error) {
//        if (granted) {
//        }else{
//        }
//    }];
//
//    [UMessage setBadgeClear:YES];
//
//
//}
//
//
////iOS10以下使用这两个方法接收通知
//-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
//{
//    [UMessage setAutoAlert:NO];
//
//    [UMessage didReceiveRemoteNotification:userInfo];
//
//    completionHandler(UIBackgroundFetchResultNewData);
//}
//
////iOS10新增：处理前台收到通知的代理方法
//-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
//    NSDictionary * userInfo = notification.request.content.userInfo;
//    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
//        [UMessage setAutoAlert:NO];
//        //应用处于前台时的远程推送接受
//        //必须加这句代码
//        [UMessage didReceiveRemoteNotification:userInfo];
//
//        //  推送调用方法
//        [self pushResultDic:userInfo isLaunch:YES];
//
//    }else{
//        //应用处于前台时的本地推送接受
//    }
//    //    completionHandler(UNNotificationPresentationOptionSound|UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionAlert);
//}
//
////iOS10新增：处理后台点击通知的代理方法
//-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{
//    NSDictionary * userInfo = response.notification.request.content.userInfo;
//    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
//        //应用处于后台时的远程推送接受
//        //必须加这句代码
//        [UMessage didReceiveRemoteNotification:userInfo];
//
//        //  推送调用方法
//        [self pushResultDic:userInfo isLaunch:NO];
//
//    }else{
//        //应用处于后台时的本地推送接受
//    }
//}
//
//
//
///**
// 接收推送
//
// @param application 应用
// @param deviceToken 设备token
// */
//- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
//{
//
//    NSString *deviceTok = [[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]
//                            stringByReplacingOccurrencesOfString: @">" withString: @""]
//                           stringByReplacingOccurrencesOfString: @" " withString: @""];
//
//    NSLog(@"%@",deviceTok);
//
//
//
//    //  网络请求    用户设备、token上报
//    [InformationReportClass requestDataInTokenAndDeviceUUidWithToken:deviceTok deviceUUid: [SJAppInformationTool gainMobileDeviceUUid]];
//}
//
//
//
//
///**
// 推送调用方法
//
// @param pushResultDic 推送消息
// @param isLaunch 启动方法，从后台启动
// */
//- (void)pushResultDic:(NSDictionary *)pushResultDic
//             isLaunch:(BOOL)isLaunch
//{
//
//    //  收起键盘
//    [[UIApplication sharedApplication].keyWindow endEditing:YES];
//
//
//    if(isLaunch)
//    {
//        //  前台
//        [GTBUmengPushClass pushApplicationStateActiveWithResult:pushResultDic];
//    }
//    else
//    {
//
//        [GTBUmengPushClass pushApplicationStateInactiveWithResult:pushResultDic];
//    }
//
//}



@end
